gdk_surface_paint_on_clock (GdkFrameClock *clock,
void *data)
{
- GdkSurface *surface;
-
- surface = GDK_SURFACE (data);
+ GdkSurface *surface = GDK_SURFACE (data);
+ GList *l;
g_return_if_fail (GDK_IS_SURFACE (surface));
gdk_surface_remove_update_surface (surface);
}
+ for (l = surface->children; l; l = l->next)
+ gdk_surface_paint_on_clock (clock, l->data);
+
g_object_unref (surface);
}
if (clock)
{
g_object_ref (clock);
- g_signal_connect (G_OBJECT (clock),
- "flush-events",
- G_CALLBACK (gdk_surface_flush_events),
- surface);
- g_signal_connect (G_OBJECT (clock),
- "paint",
- G_CALLBACK (gdk_surface_paint_on_clock),
- surface);
- g_signal_connect (G_OBJECT (clock),
- "resume-events",
- G_CALLBACK (gdk_surface_resume_events),
- surface);
+ if (surface->parent == NULL)
+ {
+ g_signal_connect (G_OBJECT (clock),
+ "flush-events",
+ G_CALLBACK (gdk_surface_flush_events),
+ surface);
+ g_signal_connect (G_OBJECT (clock),
+ "resume-events",
+ G_CALLBACK (gdk_surface_resume_events),
+ surface);
+ g_signal_connect (G_OBJECT (clock),
+ "paint",
+ G_CALLBACK (gdk_surface_paint_on_clock),
+ surface);
+ }
}
if (surface->frame_clock)
{
- if (surface->frame_clock_events_paused)
- gdk_surface_resume_events (surface->frame_clock, G_OBJECT (surface));
-
- g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
- G_CALLBACK (gdk_surface_flush_events),
- surface);
- g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
- G_CALLBACK (gdk_surface_paint_on_clock),
- surface);
- g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
- G_CALLBACK (gdk_surface_resume_events),
- surface);
+ if (surface->parent == NULL)
+ {
+ if (surface->frame_clock_events_paused)
+ gdk_surface_resume_events (surface->frame_clock, G_OBJECT (surface));
+
+ g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
+ G_CALLBACK (gdk_surface_flush_events),
+ surface);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
+ G_CALLBACK (gdk_surface_resume_events),
+ surface);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
+ G_CALLBACK (gdk_surface_paint_on_clock),
+ surface);
+ }
g_object_unref (surface->frame_clock);
}